library(tidyverse)
library(here)
library(tidytuesdayR)
library(lubridate)
To Download moveVis : install.packages(“moveVis”)
# install.packages("moveVis")
library(moveVis)
To demostrate the abilities of this package, we will use Pet Cats UK dataset from TidyTuesday
Will use the “cats_uk” dataset
tuesdata <- tidytuesdayR::tt_load(2023, week = 5)
##
## Downloading file 1 of 2: `cats_uk.csv`
## Downloading file 2 of 2: `cats_uk_reference.csv`
cats_uk <- as.data.frame(tuesdata$cats_uk)
glimpse(cats_uk)
## Rows: 18,215
## Columns: 11
## $ tag_id <chr> "Ares", "Ares", "Ares", "Ares", "Ares", "Ares…
## $ event_id <dbl> 3395610551, 3395610552, 3395610553, 339561055…
## $ visible <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRU…
## $ timestamp <dttm> 2017-06-24 01:03:57, 2017-06-24 01:11:20, 20…
## $ location_long <dbl> -5.113851, -5.113851, -5.113730, -5.113774, -…
## $ location_lat <dbl> 50.17032, 50.17032, 50.16988, 50.16983, 50.17…
## $ ground_speed <dbl> 684, 936, 2340, 0, 4896, 504, 108, 504, 252, …
## $ height_above_ellipsoid <dbl> 154.67, 154.67, 81.35, 67.82, 118.03, 123.07,…
## $ algorithm_marked_outlier <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL…
## $ manually_marked_outlier <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL…
## $ study_name <chr> "Pet Cats United Kingdom", "Pet Cats United K…
Needs to be a times data
Cannot have duplicated time stamp
cats_uk <- cats_uk%>%
mutate( timestamp = ymd_hms(timestamp)) %>%
filter(tag_id %in% c("Athena","Ares", "Lola")) #simplify dataset to managable practice set
If there is duplicated timestamp, needs to be removed
cats_uk <- cats_uk[!duplicated(cats_uk$timestamp),]
First have to convert a data.frame to move or moveStack using df2move()
Our required compnents of the data will be specified here
cat <- df2move(cats_uk, #df
proj = "+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0", #type of projection
x = "location_long", #what are your x coord
y = "location_lat",
time = "timestamp", #what are the time, needs to be POSIXct
track_id = "tag_id"
)
glimpse(cat)
## Formal class 'MoveStack' [package "move"] with 17 slots
## ..@ trackId : Factor w/ 3 levels "Ares","Athena",..: 1 1 1 1 1 1 1 1 1 1 ...
## ..@ timestamps : POSIXct[1:432], format: "2017-06-24 01:03:57" "2017-06-24 01:11:20" ...
## ..@ idData :'data.frame': 3 obs. of 0 variables
## ..@ sensor : Factor w/ 1 level "unknown": 1 1 1 1 1 1 1 1 1 1 ...
## ..@ data :'data.frame': 432 obs. of 3 variables:
## .. ..$ x : num [1:432] -5.11 -5.11 -5.11 -5.11 -5.11 ...
## .. ..$ y : num [1:432] 50.2 50.2 50.2 50.2 50.2 ...
## .. ..$ time: POSIXct[1:432], format: "2017-06-24 01:03:57" "2017-06-24 01:11:20" ...
## ..@ coords.nrs : num(0)
## ..@ coords : num [1:432, 1:2] -5.11 -5.11 -5.11 -5.11 -5.11 ...
## .. ..- attr(*, "dimnames")=List of 2
## ..@ bbox : num [1:2, 1:2] -5.12 50.14 -5.07 50.17
## .. ..- attr(*, "dimnames")=List of 2
## ..@ proj4string :Formal class 'CRS' [package "sp"] with 1 slot
## ..@ trackIdUnUsedRecords : Factor w/ 3 levels "Ares","Athena",..:
## ..@ timestampsUnUsedRecords: NULL
## ..@ sensorUnUsedRecords : Factor w/ 1 level "unknown":
## ..@ dataUnUsedRecords :'data.frame': 0 obs. of 0 variables
## ..@ dateCreation : POSIXct[1:1], format: "2023-03-25 21:21:29"
## ..@ study : chr(0)
## ..@ citation : chr(0)
## ..@ license : chr(0)
To be able to convert data into frames, it needs to be consistent time intervals
m <- align_move(cat,
res = 10, #specify resolution
unit = "mins") #resolution unit
glimpse(m)
## Formal class 'MoveStack' [package "move"] with 17 slots
## ..@ trackId : Factor w/ 3 levels "Ares","Athena",..: 1 1 1 1 1 1 1 1 1 1 ...
## ..@ timestamps : POSIXct[1:2903], format: "2017-06-24 01:10:13" "2017-06-24 01:20:13" ...
## .. ..- attr(*, "names")="Ares1" "Ares2" ...
## ..@ idData :'data.frame': 3 obs. of 0 variables
## ..@ sensor : Factor w/ 2 levels "unknown","interpolateTime": 2 2 2 2 2 2 2 2 2 2 ...
## .. ..- attr(*, "names")= chr [1:2903] "Ares1" "Ares2" "Ares3" "Ares4" ...
## ..@ data :'data.frame': 2903 obs. of 3 variables:
## .. ..$ x : num [1:2903] -5.11 -5.11 -5.11 -5.11 -5.11 ...
## .. ..$ y : num [1:2903] 50.2 50.2 50.2 50.2 50.2 ...
## .. ..$ time: POSIXct[1:2903], format: "2017-06-24 01:10:13" "2017-06-24 01:20:13" ...
## ..@ coords.nrs : num(0)
## ..@ coords : num [1:2903, 1:2] -5.11 -5.11 -5.11 -5.11 -5.11 ...
## .. ..- attr(*, "dimnames")=List of 2
## ..@ bbox : num [1:2, 1:2] -5.12 50.14 -5.07 50.17
## .. ..- attr(*, "dimnames")=List of 2
## ..@ proj4string :Formal class 'CRS' [package "sp"] with 1 slot
## ..@ trackIdUnUsedRecords : Factor w/ 3 levels "Ares","Athena",..:
## ..@ timestampsUnUsedRecords: NULL
## ..@ sensorUnUsedRecords : Factor w/ 2 levels "unknown","interpolateTime":
## ..@ dataUnUsedRecords :'data.frame': 0 obs. of 0 variables
## ..@ dateCreation : POSIXct[1:1], format: "2023-03-25 21:21:29"
## ..@ study : chr(0)
## ..@ citation : chr(0)
## ..@ license : chr(0)
library(move)
You can use get_maptypes() get a list of all available map_services and map_types
get_maptypes()
## $osm
## [1] "streets" "streets_de" "streets_fr" "humanitarian" "topographic"
## [6] "roads" "hydda" "hydda_base" "hike" "grayscale"
## [11] "no_labels" "watercolor" "toner" "toner_bg" "toner_lite"
## [16] "terrain" "terrain_bg" "mtb"
##
## $carto
## [1] "light" "light_no_labels" "light_only_labels"
## [4] "dark" "dark_no_labels" "dark_only_labels"
## [7] "voyager" "voyager_no_labels" "voyager_only_labels"
## [10] "voyager_labels_under"
##
## $mapbox
## [1] "satellite" "streets" "streets_basic" "hybrid"
## [5] "light" "dark" "high_contrast" "outdoors"
## [9] "hike" "wheatpaste" "pencil" "comic"
## [13] "pirates" "emerald"
frames <- frames_spatial(
m = m, # input data
trace_show = TRUE, # show trace of complete path
equidistant = FALSE, # make map square (FALSE = prevent stretching of map)
map_service = "osm", # select map service
map_type = "streets", # select map type
alpha = 0.75, # select transparency level for map
path_colours = c("#D55E00", "#009E73", "#56B4E9"), # select colors for paths
ext = extent(-5.12, -5.065, 50.14, 50.175), # define a custom extent for map
map_res = 0.8, # select map resolution
)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 39.84s at 25 fps for 996 frames
## Retrieving and compositing basemap imagery...
## Assigning raster maps to frames...
## Creating frames...
You can use length() to check the number of frames
length(frames)
## [1] 996
You can use frames[[]] to view a single frame at a time
frames[[100]]
# Adapting
spatial frames
You can use add_labels() to add labels to frames
frames <- add_labels(frames, x = "Longitude", y = "Latitude") # add axis labels
frames[[100]]
You can use add_timestamps() to show timestamps on frames
frames <- add_timestamps(frames, type = "label")
frames[[100]]
You can use add_progress() to add a progress bar to frames
frames <- add_progress(frames, colour = "red")
frames[[100]]
You can use add_northarrow() to add a north arrow to frames
frames <- add_northarrow(frames, colour = "black", height = 0.08, position = "bottomleft")
frames[[100]]
You can use add_scalebar() to add a scalebar to frames
frames <- add_scalebar(frames, colour = "black", position = "bottomright", height = 0.022, label_margin = 1.4, distance = 1)
frames[[100]]
You can include additional visual features in frames
# Make data.frame() with coordinates for vertices of a polygon
data <- data.frame(x = c(-5.11, -5.10, -5.10, -5.11, -5.11),
y = c(50.160, 50.160, 50.165, 50.165, 50.160))
# You can customize individual frames with geom_path()
modified_frame <- frames[[100]] + geom_path(aes(x = x, y = y), data = data, colour = "red", linetype = "dashed")
modified_frame
You can use add_gg() to customize all of the frames at once
frames <- add_gg(frames, gg = expr(geom_path(aes(x = x, y = y), data = data, color = "red", linetype = "dashed")), data = data)
frames[[100]]
You can also use add_gg() to add dynamic/animated features to frames
# create data.frame containing coordinates for polygon vertices
data <- data.frame(x = c(-5.08, -5.09, -5.09, -5.08, -5.08),
y = c(50.150, 50.150, 50.155, 50.155, 50.150))
# make a list from the data.frame by replicating it by the length of frames
data <- rep(list(data), length.out = length(frames))
# alter the coordinates to make them shift
data <- lapply(data, function(x){
y <- rnorm(nrow(x)-1, mean = 0.00001, sd = 0.0001)
x + c(y, y[1])
})
# draw each individual polygon to each frame
frames <- add_gg(frames, gg = expr(geom_path(aes(x = x, y = y), data = data, colour = "black")), data = data)
frames[[100]]
You can use add_text() to add text labels to frames
# add a text label for the static polygon
frames <- add_text(
frames,
"Static feature",
x = -5.105,
y = 50.159,
colour = "black",
size = 3
)
# add a text label for the dynamic polygon
frames <- add_text(
frames,
"Dynamic feature",
x = -5.085,
y = 50.149,
colour = "black",
size = 3
)
frames[[100]]
You can use get_frametimes() to get a vector of timestamps for frames
frames.ts <- get_frametimes(frames)
print(frames.ts)
## [1] "2017-06-24 01:10:13 UTC" "2017-06-24 01:20:13 UTC"
## [3] "2017-06-24 01:30:13 UTC" "2017-06-24 01:40:13 UTC"
## [5] "2017-06-24 01:50:13 UTC" "2017-06-24 02:00:13 UTC"
## [7] "2017-06-24 02:10:13 UTC" "2017-06-24 02:20:13 UTC"
## [9] "2017-06-24 02:30:13 UTC" "2017-06-24 02:40:13 UTC"
## [11] "2017-06-24 02:50:13 UTC" "2017-06-24 03:00:13 UTC"
## [13] "2017-06-24 03:10:13 UTC" "2017-06-24 03:20:13 UTC"
## [15] "2017-06-24 03:30:13 UTC" "2017-06-24 03:40:13 UTC"
## [17] "2017-06-24 03:50:13 UTC" "2017-06-24 04:00:13 UTC"
## [19] "2017-06-24 04:10:13 UTC" "2017-06-24 04:20:13 UTC"
## [21] "2017-06-24 04:30:13 UTC" "2017-06-24 04:40:13 UTC"
## [23] "2017-06-24 04:50:13 UTC" "2017-06-24 05:00:13 UTC"
## [25] "2017-06-24 05:10:13 UTC" "2017-06-24 05:20:13 UTC"
## [27] "2017-06-24 05:30:13 UTC" "2017-06-24 05:40:13 UTC"
## [29] "2017-06-24 05:50:13 UTC" "2017-06-24 06:00:13 UTC"
## [31] "2017-06-24 06:10:13 UTC" "2017-06-24 06:20:13 UTC"
## [33] "2017-06-24 06:30:13 UTC" "2017-06-24 06:40:13 UTC"
## [35] "2017-06-24 06:50:13 UTC" "2017-06-24 07:00:13 UTC"
## [37] "2017-06-24 07:10:13 UTC" "2017-06-24 07:20:13 UTC"
## [39] "2017-06-24 07:30:13 UTC" "2017-06-24 07:40:13 UTC"
## [41] "2017-06-24 07:50:13 UTC" "2017-06-24 08:00:13 UTC"
## [43] "2017-06-24 08:10:13 UTC" "2017-06-24 08:20:13 UTC"
## [45] "2017-06-24 08:30:13 UTC" "2017-06-24 08:40:13 UTC"
## [47] "2017-06-24 08:50:13 UTC" "2017-06-24 09:00:13 UTC"
## [49] "2017-06-24 09:10:13 UTC" "2017-06-24 09:20:13 UTC"
## [51] "2017-06-24 09:30:13 UTC" "2017-06-24 09:40:13 UTC"
## [53] "2017-06-24 09:50:13 UTC" "2017-06-24 10:00:13 UTC"
## [55] "2017-06-24 10:10:13 UTC" "2017-06-24 10:20:13 UTC"
## [57] "2017-06-24 10:30:13 UTC" "2017-06-24 10:40:13 UTC"
## [59] "2017-06-24 10:50:13 UTC" "2017-06-24 11:00:13 UTC"
## [61] "2017-06-24 11:10:13 UTC" "2017-06-24 11:20:13 UTC"
## [63] "2017-06-24 11:30:13 UTC" "2017-06-24 11:40:13 UTC"
## [65] "2017-06-24 11:50:13 UTC" "2017-06-24 12:00:13 UTC"
## [67] "2017-06-24 12:10:13 UTC" "2017-06-24 12:20:13 UTC"
## [69] "2017-06-24 12:30:13 UTC" "2017-06-24 12:40:13 UTC"
## [71] "2017-06-24 12:50:13 UTC" "2017-06-24 13:00:13 UTC"
## [73] "2017-06-24 13:10:13 UTC" "2017-06-24 13:20:13 UTC"
## [75] "2017-06-24 13:30:13 UTC" "2017-06-24 13:40:13 UTC"
## [77] "2017-06-24 13:50:13 UTC" "2017-06-24 14:00:13 UTC"
## [79] "2017-06-24 14:10:13 UTC" "2017-06-24 14:20:13 UTC"
## [81] "2017-06-24 14:30:13 UTC" "2017-06-24 14:40:13 UTC"
## [83] "2017-06-24 14:50:13 UTC" "2017-06-24 15:00:13 UTC"
## [85] "2017-06-24 15:10:13 UTC" "2017-06-24 15:20:13 UTC"
## [87] "2017-06-24 15:30:13 UTC" "2017-06-24 15:40:13 UTC"
## [89] "2017-06-24 15:50:13 UTC" "2017-06-24 16:00:13 UTC"
## [91] "2017-06-24 16:10:13 UTC" "2017-06-24 16:20:13 UTC"
## [93] "2017-06-24 16:30:13 UTC" "2017-06-24 16:40:13 UTC"
## [95] "2017-06-24 16:50:13 UTC" "2017-06-24 17:00:13 UTC"
## [97] "2017-06-24 17:10:13 UTC" "2017-06-24 17:20:13 UTC"
## [99] "2017-06-24 17:30:13 UTC" "2017-06-24 17:40:13 UTC"
## [101] "2017-06-24 17:50:13 UTC" "2017-06-24 18:00:13 UTC"
## [103] "2017-06-24 18:10:13 UTC" "2017-06-24 18:20:13 UTC"
## [105] "2017-06-24 18:30:13 UTC" "2017-06-24 18:40:13 UTC"
## [107] "2017-06-24 18:50:13 UTC" "2017-06-24 19:00:13 UTC"
## [109] "2017-06-24 19:10:13 UTC" "2017-06-24 19:20:13 UTC"
## [111] "2017-06-24 19:30:13 UTC" "2017-06-24 19:40:13 UTC"
## [113] "2017-06-24 19:50:13 UTC" "2017-06-24 20:00:13 UTC"
## [115] "2017-06-24 20:10:13 UTC" "2017-06-24 20:20:13 UTC"
## [117] "2017-06-24 20:30:13 UTC" "2017-06-24 20:40:13 UTC"
## [119] "2017-06-24 20:50:13 UTC" "2017-06-24 21:00:13 UTC"
## [121] "2017-06-24 21:10:13 UTC" "2017-06-24 21:20:13 UTC"
## [123] "2017-06-24 21:30:13 UTC" "2017-06-24 21:40:13 UTC"
## [125] "2017-06-24 21:50:13 UTC" "2017-06-24 22:00:13 UTC"
## [127] "2017-06-24 22:10:13 UTC" "2017-06-24 22:20:13 UTC"
## [129] "2017-06-24 22:30:13 UTC" "2017-06-24 22:40:13 UTC"
## [131] "2017-06-24 22:50:13 UTC" "2017-06-24 23:00:13 UTC"
## [133] "2017-06-24 23:10:13 UTC" "2017-06-24 23:20:13 UTC"
## [135] "2017-06-24 23:30:13 UTC" "2017-06-24 23:40:13 UTC"
## [137] "2017-06-24 23:50:13 UTC" "2017-06-25 00:00:13 UTC"
## [139] "2017-06-25 00:10:13 UTC" "2017-06-25 00:20:13 UTC"
## [141] "2017-06-25 00:30:13 UTC" "2017-06-25 00:40:13 UTC"
## [143] "2017-06-25 00:50:13 UTC" "2017-06-25 01:00:13 UTC"
## [145] "2017-06-25 01:10:13 UTC" "2017-06-25 01:20:13 UTC"
## [147] "2017-06-25 01:30:13 UTC" "2017-06-25 01:40:13 UTC"
## [149] "2017-06-25 01:50:13 UTC" "2017-06-25 02:00:13 UTC"
## [151] "2017-06-25 02:10:13 UTC" "2017-06-25 02:20:13 UTC"
## [153] "2017-06-25 02:30:13 UTC" "2017-06-25 02:40:13 UTC"
## [155] "2017-06-25 02:50:13 UTC" "2017-06-25 03:00:13 UTC"
## [157] "2017-06-25 03:10:13 UTC" "2017-06-25 03:20:13 UTC"
## [159] "2017-06-25 03:30:13 UTC" "2017-06-25 03:40:13 UTC"
## [161] "2017-06-25 03:50:13 UTC" "2017-06-25 04:00:13 UTC"
## [163] "2017-06-25 04:10:13 UTC" "2017-06-25 04:20:13 UTC"
## [165] "2017-06-25 04:30:13 UTC" "2017-06-25 04:40:13 UTC"
## [167] "2017-06-25 04:50:13 UTC" "2017-06-25 05:00:13 UTC"
## [169] "2017-06-25 05:10:13 UTC" "2017-06-25 05:20:13 UTC"
## [171] "2017-06-25 05:30:13 UTC" "2017-06-25 05:40:13 UTC"
## [173] "2017-06-25 05:50:13 UTC" "2017-06-25 06:00:13 UTC"
## [175] "2017-06-25 06:10:13 UTC" "2017-06-25 06:20:13 UTC"
## [177] "2017-06-25 06:30:13 UTC" "2017-06-25 06:40:13 UTC"
## [179] "2017-06-25 06:50:13 UTC" "2017-06-25 07:00:13 UTC"
## [181] "2017-06-25 07:10:13 UTC" "2017-06-25 07:20:13 UTC"
## [183] "2017-06-25 07:30:13 UTC" "2017-06-25 07:40:13 UTC"
## [185] "2017-06-25 07:50:13 UTC" "2017-06-25 08:00:13 UTC"
## [187] "2017-06-25 08:10:13 UTC" "2017-06-25 08:20:13 UTC"
## [189] "2017-06-25 08:30:13 UTC" "2017-06-25 08:40:13 UTC"
## [191] "2017-06-25 08:50:13 UTC" "2017-06-25 09:00:13 UTC"
## [193] "2017-06-25 09:10:13 UTC" "2017-06-25 09:20:13 UTC"
## [195] "2017-06-25 09:30:13 UTC" "2017-06-25 09:40:13 UTC"
## [197] "2017-06-25 09:50:13 UTC" "2017-06-25 10:00:13 UTC"
## [199] "2017-06-25 10:10:13 UTC" "2017-06-25 10:20:13 UTC"
## [201] "2017-06-25 10:30:13 UTC" "2017-06-25 10:40:13 UTC"
## [203] "2017-06-25 10:50:13 UTC" "2017-06-25 11:00:13 UTC"
## [205] "2017-06-25 11:10:13 UTC" "2017-06-25 11:20:13 UTC"
## [207] "2017-06-25 11:30:13 UTC" "2017-06-25 11:40:13 UTC"
## [209] "2017-06-25 11:50:13 UTC" "2017-06-25 12:00:13 UTC"
## [211] "2017-06-25 12:10:13 UTC" "2017-06-25 12:20:13 UTC"
## [213] "2017-06-25 12:30:13 UTC" "2017-06-25 12:40:13 UTC"
## [215] "2017-06-25 12:50:13 UTC" "2017-06-25 13:00:13 UTC"
## [217] "2017-06-25 13:10:13 UTC" "2017-06-25 13:20:13 UTC"
## [219] "2017-06-25 13:30:13 UTC" "2017-06-25 13:40:13 UTC"
## [221] "2017-06-25 13:50:13 UTC" "2017-06-25 14:00:13 UTC"
## [223] "2017-06-25 14:10:13 UTC" "2017-06-25 14:20:13 UTC"
## [225] "2017-06-25 14:30:13 UTC" "2017-06-25 14:40:13 UTC"
## [227] "2017-06-25 14:50:13 UTC" "2017-06-25 15:00:13 UTC"
## [229] "2017-06-25 15:10:13 UTC" "2017-06-25 15:20:13 UTC"
## [231] "2017-06-25 15:30:13 UTC" "2017-06-25 15:40:13 UTC"
## [233] "2017-06-25 15:50:13 UTC" "2017-06-25 16:00:13 UTC"
## [235] "2017-06-25 16:10:13 UTC" "2017-06-25 16:20:13 UTC"
## [237] "2017-06-25 16:30:13 UTC" "2017-06-25 16:40:13 UTC"
## [239] "2017-06-25 16:50:13 UTC" "2017-06-25 17:00:13 UTC"
## [241] "2017-06-25 17:10:13 UTC" "2017-06-25 17:20:13 UTC"
## [243] "2017-06-25 17:30:13 UTC" "2017-06-25 17:40:13 UTC"
## [245] "2017-06-25 17:50:13 UTC" "2017-06-25 18:00:13 UTC"
## [247] "2017-06-25 18:10:13 UTC" "2017-06-25 18:20:13 UTC"
## [249] "2017-06-25 18:30:13 UTC" "2017-06-25 18:40:13 UTC"
## [251] "2017-06-25 18:50:13 UTC" "2017-06-25 19:00:13 UTC"
## [253] "2017-06-25 19:10:13 UTC" "2017-06-25 19:20:13 UTC"
## [255] "2017-06-25 19:30:13 UTC" "2017-06-25 19:40:13 UTC"
## [257] "2017-06-25 19:50:13 UTC" "2017-06-25 20:00:13 UTC"
## [259] "2017-06-25 20:10:13 UTC" "2017-06-25 20:20:13 UTC"
## [261] "2017-06-25 20:30:13 UTC" "2017-06-25 20:40:13 UTC"
## [263] "2017-06-25 20:50:13 UTC" "2017-06-25 21:00:13 UTC"
## [265] "2017-06-25 21:10:13 UTC" "2017-06-25 21:20:13 UTC"
## [267] "2017-06-25 21:30:13 UTC" "2017-06-25 21:40:13 UTC"
## [269] "2017-06-25 21:50:13 UTC" "2017-06-25 22:00:13 UTC"
## [271] "2017-06-25 22:10:13 UTC" "2017-06-25 22:20:13 UTC"
## [273] "2017-06-25 22:30:13 UTC" "2017-06-25 22:40:13 UTC"
## [275] "2017-06-25 22:50:13 UTC" "2017-06-25 23:00:13 UTC"
## [277] "2017-06-25 23:10:13 UTC" "2017-06-25 23:20:13 UTC"
## [279] "2017-06-25 23:30:13 UTC" "2017-06-25 23:40:13 UTC"
## [281] "2017-06-25 23:50:13 UTC" "2017-06-26 00:00:13 UTC"
## [283] "2017-06-26 00:10:13 UTC" "2017-06-26 00:20:13 UTC"
## [285] "2017-06-26 00:30:13 UTC" "2017-06-26 00:40:13 UTC"
## [287] "2017-06-26 00:50:13 UTC" "2017-06-26 01:00:13 UTC"
## [289] "2017-06-26 01:10:13 UTC" "2017-06-26 01:20:13 UTC"
## [291] "2017-06-26 01:30:13 UTC" "2017-06-26 01:40:13 UTC"
## [293] "2017-06-26 01:50:13 UTC" "2017-06-26 02:00:13 UTC"
## [295] "2017-06-26 02:10:13 UTC" "2017-06-26 02:20:13 UTC"
## [297] "2017-06-26 02:30:13 UTC" "2017-06-26 02:40:13 UTC"
## [299] "2017-06-26 02:50:13 UTC" "2017-06-26 03:00:13 UTC"
## [301] "2017-06-26 03:10:13 UTC" "2017-06-26 03:20:13 UTC"
## [303] "2017-06-26 03:30:13 UTC" "2017-06-26 03:40:13 UTC"
## [305] "2017-06-26 03:50:13 UTC" "2017-06-26 04:00:13 UTC"
## [307] "2017-06-26 04:10:13 UTC" "2017-06-26 04:20:13 UTC"
## [309] "2017-06-26 04:30:13 UTC" "2017-06-26 04:40:13 UTC"
## [311] "2017-06-26 04:50:13 UTC" "2017-06-26 05:00:13 UTC"
## [313] "2017-06-26 05:10:13 UTC" "2017-06-26 05:20:13 UTC"
## [315] "2017-06-26 05:30:13 UTC" "2017-06-26 05:40:13 UTC"
## [317] "2017-06-26 05:50:13 UTC" "2017-06-26 06:00:13 UTC"
## [319] "2017-06-26 06:10:13 UTC" "2017-06-26 06:20:13 UTC"
## [321] "2017-06-26 06:30:13 UTC" "2017-06-26 06:40:13 UTC"
## [323] "2017-06-26 06:50:13 UTC" "2017-06-26 07:00:13 UTC"
## [325] "2017-06-26 07:10:13 UTC" "2017-06-26 07:20:13 UTC"
## [327] "2017-06-26 07:30:13 UTC" "2017-06-26 07:40:13 UTC"
## [329] "2017-06-26 07:50:13 UTC" "2017-06-26 08:00:13 UTC"
## [331] "2017-06-26 08:10:13 UTC" "2017-06-26 08:20:13 UTC"
## [333] "2017-06-26 08:30:13 UTC" "2017-06-26 08:40:13 UTC"
## [335] "2017-06-26 08:50:13 UTC" "2017-06-26 09:00:13 UTC"
## [337] "2017-06-26 09:10:13 UTC" "2017-06-26 09:20:13 UTC"
## [339] "2017-06-26 09:30:13 UTC" "2017-06-26 09:40:13 UTC"
## [341] "2017-06-26 09:50:13 UTC" "2017-06-26 10:00:13 UTC"
## [343] "2017-06-26 10:10:13 UTC" "2017-06-26 10:20:13 UTC"
## [345] "2017-06-26 10:30:13 UTC" "2017-06-26 10:40:13 UTC"
## [347] "2017-06-26 10:50:13 UTC" "2017-06-26 11:00:13 UTC"
## [349] "2017-06-26 11:10:13 UTC" "2017-06-26 11:20:13 UTC"
## [351] "2017-06-26 11:30:13 UTC" "2017-06-26 11:40:13 UTC"
## [353] "2017-06-26 11:50:13 UTC" "2017-06-26 12:00:13 UTC"
## [355] "2017-06-26 12:10:13 UTC" "2017-06-26 12:20:13 UTC"
## [357] "2017-06-26 12:30:13 UTC" "2017-06-26 12:40:13 UTC"
## [359] "2017-06-26 12:50:13 UTC" "2017-06-26 13:00:13 UTC"
## [361] "2017-06-26 13:10:13 UTC" "2017-06-26 13:20:13 UTC"
## [363] "2017-06-26 13:30:13 UTC" "2017-06-26 13:40:13 UTC"
## [365] "2017-06-26 13:50:13 UTC" "2017-06-26 14:00:13 UTC"
## [367] "2017-06-26 14:10:13 UTC" "2017-06-26 14:20:13 UTC"
## [369] "2017-06-26 14:30:13 UTC" "2017-06-26 14:40:13 UTC"
## [371] "2017-06-26 14:50:13 UTC" "2017-06-26 15:00:13 UTC"
## [373] "2017-06-26 15:10:13 UTC" "2017-06-26 15:20:13 UTC"
## [375] "2017-06-26 15:30:13 UTC" "2017-06-26 15:40:13 UTC"
## [377] "2017-06-26 15:50:13 UTC" "2017-06-26 16:00:13 UTC"
## [379] "2017-06-26 16:10:13 UTC" "2017-06-26 16:20:13 UTC"
## [381] "2017-06-26 16:30:13 UTC" "2017-06-26 16:40:13 UTC"
## [383] "2017-06-26 16:50:13 UTC" "2017-06-26 17:00:13 UTC"
## [385] "2017-06-26 17:10:13 UTC" "2017-06-26 17:20:13 UTC"
## [387] "2017-06-26 17:30:13 UTC" "2017-06-26 17:40:13 UTC"
## [389] "2017-06-26 17:50:13 UTC" "2017-06-26 18:00:13 UTC"
## [391] "2017-06-26 18:10:13 UTC" "2017-06-26 18:20:13 UTC"
## [393] "2017-06-26 18:30:13 UTC" "2017-06-26 18:40:13 UTC"
## [395] "2017-06-26 18:50:13 UTC" "2017-06-26 19:00:13 UTC"
## [397] "2017-06-26 19:10:13 UTC" "2017-06-26 19:20:13 UTC"
## [399] "2017-06-26 19:30:13 UTC" "2017-06-26 19:40:13 UTC"
## [401] "2017-06-26 19:50:13 UTC" "2017-06-26 20:00:13 UTC"
## [403] "2017-06-26 20:10:13 UTC" "2017-06-26 20:20:13 UTC"
## [405] "2017-06-26 20:30:13 UTC" "2017-06-26 20:40:13 UTC"
## [407] "2017-06-26 20:50:13 UTC" "2017-06-26 21:00:13 UTC"
## [409] "2017-06-26 21:10:13 UTC" "2017-06-26 21:20:13 UTC"
## [411] "2017-06-26 21:30:13 UTC" "2017-06-26 21:40:13 UTC"
## [413] "2017-06-26 21:50:13 UTC" "2017-06-26 22:00:13 UTC"
## [415] "2017-06-26 22:10:13 UTC" "2017-06-26 22:20:13 UTC"
## [417] "2017-06-26 22:30:13 UTC" "2017-06-26 22:40:13 UTC"
## [419] "2017-06-26 22:50:13 UTC" "2017-06-26 23:00:13 UTC"
## [421] "2017-06-26 23:10:13 UTC" "2017-06-26 23:20:13 UTC"
## [423] "2017-06-26 23:30:13 UTC" "2017-06-26 23:40:13 UTC"
## [425] "2017-06-26 23:50:13 UTC" "2017-06-27 00:00:13 UTC"
## [427] "2017-06-27 00:10:13 UTC" "2017-06-27 00:20:13 UTC"
## [429] "2017-06-27 00:30:13 UTC" "2017-06-27 00:40:13 UTC"
## [431] "2017-06-27 00:50:13 UTC" "2017-06-27 01:00:13 UTC"
## [433] "2017-06-27 01:10:13 UTC" "2017-06-27 01:20:13 UTC"
## [435] "2017-06-27 01:30:13 UTC" "2017-06-27 01:40:13 UTC"
## [437] "2017-06-27 01:50:13 UTC" "2017-06-27 02:00:13 UTC"
## [439] "2017-06-27 02:10:13 UTC" "2017-06-27 02:20:13 UTC"
## [441] "2017-06-27 02:30:13 UTC" "2017-06-27 02:40:13 UTC"
## [443] "2017-06-27 02:50:13 UTC" "2017-06-27 03:00:13 UTC"
## [445] "2017-06-27 03:10:13 UTC" "2017-06-27 03:20:13 UTC"
## [447] "2017-06-27 03:30:13 UTC" "2017-06-27 03:40:13 UTC"
## [449] "2017-06-27 03:50:13 UTC" "2017-06-27 04:00:13 UTC"
## [451] "2017-06-27 04:10:13 UTC" "2017-06-27 04:20:13 UTC"
## [453] "2017-06-27 04:30:13 UTC" "2017-06-27 04:40:13 UTC"
## [455] "2017-06-27 04:50:13 UTC" "2017-06-27 05:00:13 UTC"
## [457] "2017-06-27 05:10:13 UTC" "2017-06-27 05:20:13 UTC"
## [459] "2017-06-27 05:30:13 UTC" "2017-06-27 05:40:13 UTC"
## [461] "2017-06-27 05:50:13 UTC" "2017-06-27 06:00:13 UTC"
## [463] "2017-06-27 06:10:13 UTC" "2017-06-27 06:20:13 UTC"
## [465] "2017-06-27 06:30:13 UTC" "2017-06-27 06:40:13 UTC"
## [467] "2017-06-27 06:50:13 UTC" "2017-06-27 07:00:13 UTC"
## [469] "2017-06-27 07:10:13 UTC" "2017-06-27 07:20:13 UTC"
## [471] "2017-06-27 07:30:13 UTC" "2017-06-27 07:40:13 UTC"
## [473] "2017-06-27 07:50:13 UTC" "2017-06-27 08:00:13 UTC"
## [475] "2017-06-27 08:10:13 UTC" "2017-06-27 08:20:13 UTC"
## [477] "2017-06-27 08:30:13 UTC" "2017-06-27 08:40:13 UTC"
## [479] "2017-06-27 08:50:13 UTC" "2017-06-27 09:00:13 UTC"
## [481] "2017-06-27 09:10:13 UTC" "2017-06-27 09:20:13 UTC"
## [483] "2017-06-27 09:30:13 UTC" "2017-06-27 09:40:13 UTC"
## [485] "2017-06-27 09:50:13 UTC" "2017-06-27 10:00:13 UTC"
## [487] "2017-06-27 10:10:13 UTC" "2017-06-27 10:20:13 UTC"
## [489] "2017-06-27 10:30:13 UTC" "2017-06-27 10:40:13 UTC"
## [491] "2017-06-27 10:50:13 UTC" "2017-06-27 11:00:13 UTC"
## [493] "2017-06-27 11:10:13 UTC" "2017-06-27 11:20:13 UTC"
## [495] "2017-06-27 11:30:13 UTC" "2017-06-27 11:40:13 UTC"
## [497] "2017-06-27 11:50:13 UTC" "2017-06-27 12:00:13 UTC"
## [499] "2017-06-27 12:10:13 UTC" "2017-06-27 12:20:13 UTC"
## [501] "2017-06-27 12:30:13 UTC" "2017-06-27 12:40:13 UTC"
## [503] "2017-06-27 12:50:13 UTC" "2017-06-27 13:00:13 UTC"
## [505] "2017-06-27 13:10:13 UTC" "2017-06-27 13:20:13 UTC"
## [507] "2017-06-27 13:30:13 UTC" "2017-06-27 13:40:13 UTC"
## [509] "2017-06-27 13:50:13 UTC" "2017-06-27 14:00:13 UTC"
## [511] "2017-06-27 14:10:13 UTC" "2017-06-27 14:20:13 UTC"
## [513] "2017-06-27 14:30:13 UTC" "2017-06-27 14:40:13 UTC"
## [515] "2017-06-27 14:50:13 UTC" "2017-06-27 15:00:13 UTC"
## [517] "2017-06-27 15:10:13 UTC" "2017-06-27 15:20:13 UTC"
## [519] "2017-06-27 15:30:13 UTC" "2017-06-27 15:40:13 UTC"
## [521] "2017-06-27 15:50:13 UTC" "2017-06-27 16:00:13 UTC"
## [523] "2017-06-27 16:10:13 UTC" "2017-06-27 16:20:13 UTC"
## [525] "2017-06-27 16:30:13 UTC" "2017-06-27 16:40:13 UTC"
## [527] "2017-06-27 16:50:13 UTC" "2017-06-27 17:00:13 UTC"
## [529] "2017-06-27 17:10:13 UTC" "2017-06-27 17:20:13 UTC"
## [531] "2017-06-27 17:30:13 UTC" "2017-06-27 17:40:13 UTC"
## [533] "2017-06-27 17:50:13 UTC" "2017-06-27 18:00:13 UTC"
## [535] "2017-06-27 18:10:13 UTC" "2017-06-27 18:20:13 UTC"
## [537] "2017-06-27 18:30:13 UTC" "2017-06-27 18:40:13 UTC"
## [539] "2017-06-27 18:50:13 UTC" "2017-06-27 19:00:13 UTC"
## [541] "2017-06-27 19:10:13 UTC" "2017-06-27 19:20:13 UTC"
## [543] "2017-06-27 19:30:13 UTC" "2017-06-27 19:40:13 UTC"
## [545] "2017-06-27 19:50:13 UTC" "2017-06-27 20:00:13 UTC"
## [547] "2017-06-27 20:10:13 UTC" "2017-06-27 20:20:13 UTC"
## [549] "2017-06-27 20:30:13 UTC" "2017-06-27 20:40:13 UTC"
## [551] "2017-06-27 20:50:13 UTC" "2017-06-27 21:00:13 UTC"
## [553] "2017-06-27 21:10:13 UTC" "2017-06-27 21:20:13 UTC"
## [555] "2017-06-27 21:30:13 UTC" "2017-06-27 21:40:13 UTC"
## [557] "2017-06-27 21:50:13 UTC" "2017-06-27 22:00:13 UTC"
## [559] "2017-06-27 22:10:13 UTC" "2017-06-27 22:20:13 UTC"
## [561] "2017-06-27 22:30:13 UTC" "2017-06-27 22:40:13 UTC"
## [563] "2017-06-27 22:50:13 UTC" "2017-06-27 23:00:13 UTC"
## [565] "2017-06-27 23:10:13 UTC" "2017-06-27 23:20:13 UTC"
## [567] "2017-06-27 23:30:13 UTC" "2017-06-27 23:40:13 UTC"
## [569] "2017-06-27 23:50:13 UTC" "2017-06-28 00:00:13 UTC"
## [571] "2017-06-28 00:10:13 UTC" "2017-06-28 00:20:13 UTC"
## [573] "2017-06-28 00:30:13 UTC" "2017-06-28 00:40:13 UTC"
## [575] "2017-06-28 00:50:13 UTC" "2017-06-28 01:00:13 UTC"
## [577] "2017-06-28 01:10:13 UTC" "2017-06-28 01:20:13 UTC"
## [579] "2017-06-28 01:30:13 UTC" "2017-06-28 01:40:13 UTC"
## [581] "2017-06-28 01:50:13 UTC" "2017-06-28 02:00:13 UTC"
## [583] "2017-06-28 02:10:13 UTC" "2017-06-28 02:20:13 UTC"
## [585] "2017-06-28 02:30:13 UTC" "2017-06-28 02:40:13 UTC"
## [587] "2017-06-28 02:50:13 UTC" "2017-06-28 03:00:13 UTC"
## [589] "2017-06-28 03:10:13 UTC" "2017-06-28 03:20:13 UTC"
## [591] "2017-06-28 03:30:13 UTC" "2017-06-28 03:40:13 UTC"
## [593] "2017-06-28 03:50:13 UTC" "2017-06-28 04:00:13 UTC"
## [595] "2017-06-28 04:10:13 UTC" "2017-06-28 04:20:13 UTC"
## [597] "2017-06-28 04:30:13 UTC" "2017-06-28 04:40:13 UTC"
## [599] "2017-06-28 04:50:13 UTC" "2017-06-28 05:00:13 UTC"
## [601] "2017-06-28 05:10:13 UTC" "2017-06-28 05:20:13 UTC"
## [603] "2017-06-28 05:30:13 UTC" "2017-06-28 05:40:13 UTC"
## [605] "2017-06-28 05:50:13 UTC" "2017-06-28 06:00:13 UTC"
## [607] "2017-06-28 06:10:13 UTC" "2017-06-28 06:20:13 UTC"
## [609] "2017-06-28 06:30:13 UTC" "2017-06-28 06:40:13 UTC"
## [611] "2017-06-28 06:50:13 UTC" "2017-06-28 07:00:13 UTC"
## [613] "2017-06-28 07:10:13 UTC" "2017-06-28 07:20:13 UTC"
## [615] "2017-06-28 07:30:13 UTC" "2017-06-28 07:40:13 UTC"
## [617] "2017-06-28 07:50:13 UTC" "2017-06-28 08:00:13 UTC"
## [619] "2017-06-28 08:10:13 UTC" "2017-06-28 08:20:13 UTC"
## [621] "2017-06-28 08:30:13 UTC" "2017-06-28 08:40:13 UTC"
## [623] "2017-06-28 08:50:13 UTC" "2017-06-28 09:00:13 UTC"
## [625] "2017-06-28 09:10:13 UTC" "2017-06-28 09:20:13 UTC"
## [627] "2017-06-28 09:30:13 UTC" "2017-06-28 09:40:13 UTC"
## [629] "2017-06-28 09:50:13 UTC" "2017-06-28 10:00:13 UTC"
## [631] "2017-06-28 10:10:13 UTC" "2017-06-28 10:20:13 UTC"
## [633] "2017-06-28 10:30:13 UTC" "2017-06-28 10:40:13 UTC"
## [635] "2017-06-28 10:50:13 UTC" "2017-06-28 11:00:13 UTC"
## [637] "2017-06-28 11:10:13 UTC" "2017-06-28 11:20:13 UTC"
## [639] "2017-06-28 11:30:13 UTC" "2017-06-28 11:40:13 UTC"
## [641] "2017-06-28 11:50:13 UTC" "2017-06-28 12:00:13 UTC"
## [643] "2017-06-28 12:10:13 UTC" "2017-06-28 12:20:13 UTC"
## [645] "2017-06-28 12:30:13 UTC" "2017-06-28 12:40:13 UTC"
## [647] "2017-06-28 12:50:13 UTC" "2017-06-28 13:00:13 UTC"
## [649] "2017-06-28 13:10:13 UTC" "2017-06-28 13:20:13 UTC"
## [651] "2017-06-28 13:30:13 UTC" "2017-06-28 13:40:13 UTC"
## [653] "2017-06-28 13:50:13 UTC" "2017-06-28 14:00:13 UTC"
## [655] "2017-06-28 14:10:13 UTC" "2017-06-28 14:20:13 UTC"
## [657] "2017-06-28 14:30:13 UTC" "2017-06-28 14:40:13 UTC"
## [659] "2017-06-28 14:50:13 UTC" "2017-06-28 15:00:13 UTC"
## [661] "2017-06-28 15:10:13 UTC" "2017-06-28 15:20:13 UTC"
## [663] "2017-06-28 15:30:13 UTC" "2017-06-28 15:40:13 UTC"
## [665] "2017-06-28 15:50:13 UTC" "2017-06-28 16:00:13 UTC"
## [667] "2017-06-28 16:10:13 UTC" "2017-06-28 16:20:13 UTC"
## [669] "2017-06-28 16:30:13 UTC" "2017-06-28 16:40:13 UTC"
## [671] "2017-06-28 16:50:13 UTC" "2017-06-28 17:00:13 UTC"
## [673] "2017-06-28 17:10:13 UTC" "2017-06-28 17:20:13 UTC"
## [675] "2017-06-28 17:30:13 UTC" "2017-06-28 17:40:13 UTC"
## [677] "2017-06-28 17:50:13 UTC" "2017-06-28 18:00:13 UTC"
## [679] "2017-06-28 18:10:13 UTC" "2017-06-28 18:20:13 UTC"
## [681] "2017-06-28 18:30:13 UTC" "2017-06-28 18:40:13 UTC"
## [683] "2017-06-28 18:50:13 UTC" "2017-06-28 19:00:13 UTC"
## [685] "2017-06-28 19:10:13 UTC" "2017-06-28 19:20:13 UTC"
## [687] "2017-06-28 19:30:13 UTC" "2017-06-28 19:40:13 UTC"
## [689] "2017-06-28 19:50:13 UTC" "2017-06-28 20:00:13 UTC"
## [691] "2017-06-28 20:10:13 UTC" "2017-06-28 20:20:13 UTC"
## [693] "2017-06-28 20:30:13 UTC" "2017-06-28 20:40:13 UTC"
## [695] "2017-06-28 20:50:13 UTC" "2017-06-28 21:00:13 UTC"
## [697] "2017-06-28 21:10:13 UTC" "2017-06-28 21:20:13 UTC"
## [699] "2017-06-28 21:30:13 UTC" "2017-06-28 21:40:13 UTC"
## [701] "2017-06-28 21:50:13 UTC" "2017-06-28 22:00:13 UTC"
## [703] "2017-06-28 22:10:13 UTC" "2017-06-28 22:20:13 UTC"
## [705] "2017-06-28 22:30:13 UTC" "2017-06-28 22:40:13 UTC"
## [707] "2017-06-28 22:50:13 UTC" "2017-06-28 23:00:13 UTC"
## [709] "2017-06-28 23:10:13 UTC" "2017-06-28 23:20:13 UTC"
## [711] "2017-06-28 23:30:13 UTC" "2017-06-28 23:40:13 UTC"
## [713] "2017-06-28 23:50:13 UTC" "2017-06-29 00:00:13 UTC"
## [715] "2017-06-29 00:10:13 UTC" "2017-06-29 00:20:13 UTC"
## [717] "2017-06-29 00:30:13 UTC" "2017-06-29 00:40:13 UTC"
## [719] "2017-06-29 00:50:13 UTC" "2017-06-29 01:00:13 UTC"
## [721] "2017-06-29 01:10:13 UTC" "2017-06-29 01:20:13 UTC"
## [723] "2017-06-29 01:30:13 UTC" "2017-06-29 01:40:13 UTC"
## [725] "2017-06-29 01:50:13 UTC" "2017-06-29 02:00:13 UTC"
## [727] "2017-06-29 02:10:13 UTC" "2017-06-29 02:20:13 UTC"
## [729] "2017-06-29 02:30:13 UTC" "2017-06-29 02:40:13 UTC"
## [731] "2017-06-29 02:50:13 UTC" "2017-06-29 03:00:13 UTC"
## [733] "2017-06-29 03:10:13 UTC" "2017-06-29 03:20:13 UTC"
## [735] "2017-06-29 03:30:13 UTC" "2017-06-29 03:40:13 UTC"
## [737] "2017-06-29 03:50:13 UTC" "2017-06-29 04:00:13 UTC"
## [739] "2017-06-29 04:10:13 UTC" "2017-06-29 04:20:13 UTC"
## [741] "2017-06-29 04:30:13 UTC" "2017-06-29 04:40:13 UTC"
## [743] "2017-06-29 04:50:13 UTC" "2017-06-29 05:00:13 UTC"
## [745] "2017-06-29 05:10:13 UTC" "2017-06-29 05:20:13 UTC"
## [747] "2017-06-29 05:30:13 UTC" "2017-06-29 05:40:13 UTC"
## [749] "2017-06-29 05:50:13 UTC" "2017-06-29 06:00:13 UTC"
## [751] "2017-06-29 06:10:13 UTC" "2017-06-29 06:20:13 UTC"
## [753] "2017-06-29 06:30:13 UTC" "2017-06-29 06:40:13 UTC"
## [755] "2017-06-29 06:50:13 UTC" "2017-06-29 07:00:13 UTC"
## [757] "2017-06-29 07:10:13 UTC" "2017-06-29 07:20:13 UTC"
## [759] "2017-06-29 07:30:13 UTC" "2017-06-29 07:40:13 UTC"
## [761] "2017-06-29 07:50:13 UTC" "2017-06-29 08:00:13 UTC"
## [763] "2017-06-29 08:10:13 UTC" "2017-06-29 08:20:13 UTC"
## [765] "2017-06-29 08:30:13 UTC" "2017-06-29 08:40:13 UTC"
## [767] "2017-06-29 08:50:13 UTC" "2017-06-29 09:00:13 UTC"
## [769] "2017-06-29 09:10:13 UTC" "2017-06-29 09:20:13 UTC"
## [771] "2017-06-29 09:30:13 UTC" "2017-06-29 09:40:13 UTC"
## [773] "2017-06-29 09:50:13 UTC" "2017-06-29 10:00:13 UTC"
## [775] "2017-06-29 10:10:13 UTC" "2017-06-29 10:20:13 UTC"
## [777] "2017-06-29 10:30:13 UTC" "2017-06-29 10:40:13 UTC"
## [779] "2017-06-29 10:50:13 UTC" "2017-06-29 11:00:13 UTC"
## [781] "2017-06-29 11:10:13 UTC" "2017-06-29 11:20:13 UTC"
## [783] "2017-06-29 11:30:13 UTC" "2017-06-29 11:40:13 UTC"
## [785] "2017-06-29 11:50:13 UTC" "2017-06-29 12:00:13 UTC"
## [787] "2017-06-29 12:10:13 UTC" "2017-06-29 12:20:13 UTC"
## [789] "2017-06-29 12:30:13 UTC" "2017-06-29 12:40:13 UTC"
## [791] "2017-06-29 12:50:13 UTC" "2017-06-29 13:00:13 UTC"
## [793] "2017-06-29 13:10:13 UTC" "2017-06-29 13:20:13 UTC"
## [795] "2017-06-29 13:30:13 UTC" "2017-06-29 13:40:13 UTC"
## [797] "2017-06-29 13:50:13 UTC" "2017-06-29 14:00:13 UTC"
## [799] "2017-06-29 14:10:13 UTC" "2017-06-29 14:20:13 UTC"
## [801] "2017-06-29 14:30:13 UTC" "2017-06-29 14:40:13 UTC"
## [803] "2017-06-29 14:50:13 UTC" "2017-06-29 15:00:13 UTC"
## [805] "2017-06-29 15:10:13 UTC" "2017-06-29 15:20:13 UTC"
## [807] "2017-06-29 15:30:13 UTC" "2017-06-29 15:40:13 UTC"
## [809] "2017-06-29 15:50:13 UTC" "2017-06-29 16:00:13 UTC"
## [811] "2017-06-29 16:10:13 UTC" "2017-06-29 16:20:13 UTC"
## [813] "2017-06-29 16:30:13 UTC" "2017-06-29 16:40:13 UTC"
## [815] "2017-06-29 16:50:13 UTC" "2017-06-29 17:00:13 UTC"
## [817] "2017-06-29 17:10:13 UTC" "2017-06-29 17:20:13 UTC"
## [819] "2017-06-29 17:30:13 UTC" "2017-06-29 17:40:13 UTC"
## [821] "2017-06-29 17:50:13 UTC" "2017-06-29 18:00:13 UTC"
## [823] "2017-06-29 18:10:13 UTC" "2017-06-29 18:20:13 UTC"
## [825] "2017-06-29 18:30:13 UTC" "2017-06-29 18:40:13 UTC"
## [827] "2017-06-29 18:50:13 UTC" "2017-06-29 19:00:13 UTC"
## [829] "2017-06-29 19:10:13 UTC" "2017-06-29 19:20:13 UTC"
## [831] "2017-06-29 19:30:13 UTC" "2017-06-29 19:40:13 UTC"
## [833] "2017-06-29 19:50:13 UTC" "2017-06-29 20:00:13 UTC"
## [835] "2017-06-29 20:10:13 UTC" "2017-06-29 20:20:13 UTC"
## [837] "2017-06-29 20:30:13 UTC" "2017-06-29 20:40:13 UTC"
## [839] "2017-06-29 20:50:13 UTC" "2017-06-29 21:00:13 UTC"
## [841] "2017-06-29 21:10:13 UTC" "2017-06-29 21:20:13 UTC"
## [843] "2017-06-29 21:30:13 UTC" "2017-06-29 21:40:13 UTC"
## [845] "2017-06-29 21:50:13 UTC" "2017-06-29 22:00:13 UTC"
## [847] "2017-06-29 22:10:13 UTC" "2017-06-29 22:20:13 UTC"
## [849] "2017-06-29 22:30:13 UTC" "2017-06-29 22:40:13 UTC"
## [851] "2017-06-29 22:50:13 UTC" "2017-06-29 23:00:13 UTC"
## [853] "2017-06-29 23:10:13 UTC" "2017-06-29 23:20:13 UTC"
## [855] "2017-06-29 23:30:13 UTC" "2017-06-29 23:40:13 UTC"
## [857] "2017-06-29 23:50:13 UTC" "2017-06-30 00:00:13 UTC"
## [859] "2017-06-30 00:10:13 UTC" "2017-06-30 00:20:13 UTC"
## [861] "2017-06-30 00:30:13 UTC" "2017-06-30 00:40:13 UTC"
## [863] "2017-06-30 00:50:13 UTC" "2017-06-30 01:00:13 UTC"
## [865] "2017-06-30 01:10:13 UTC" "2017-06-30 01:20:13 UTC"
## [867] "2017-06-30 01:30:13 UTC" "2017-06-30 01:40:13 UTC"
## [869] "2017-06-30 01:50:13 UTC" "2017-06-30 02:00:13 UTC"
## [871] "2017-06-30 02:10:13 UTC" "2017-06-30 02:20:13 UTC"
## [873] "2017-06-30 02:30:13 UTC" "2017-06-30 02:40:13 UTC"
## [875] "2017-06-30 02:50:13 UTC" "2017-06-30 03:00:13 UTC"
## [877] "2017-06-30 03:10:13 UTC" "2017-06-30 03:20:13 UTC"
## [879] "2017-06-30 03:30:13 UTC" "2017-06-30 03:40:13 UTC"
## [881] "2017-06-30 03:50:13 UTC" "2017-06-30 04:00:13 UTC"
## [883] "2017-06-30 04:10:13 UTC" "2017-06-30 04:20:13 UTC"
## [885] "2017-06-30 04:30:13 UTC" "2017-06-30 04:40:13 UTC"
## [887] "2017-06-30 04:50:13 UTC" "2017-06-30 05:00:13 UTC"
## [889] "2017-06-30 05:10:13 UTC" "2017-06-30 05:20:13 UTC"
## [891] "2017-06-30 05:30:13 UTC" "2017-06-30 05:40:13 UTC"
## [893] "2017-06-30 05:50:13 UTC" "2017-06-30 06:00:13 UTC"
## [895] "2017-06-30 06:10:13 UTC" "2017-06-30 06:20:13 UTC"
## [897] "2017-06-30 06:30:13 UTC" "2017-06-30 06:40:13 UTC"
## [899] "2017-06-30 06:50:13 UTC" "2017-06-30 07:00:13 UTC"
## [901] "2017-06-30 07:10:13 UTC" "2017-06-30 07:20:13 UTC"
## [903] "2017-06-30 07:30:13 UTC" "2017-06-30 07:40:13 UTC"
## [905] "2017-06-30 07:50:13 UTC" "2017-06-30 08:00:13 UTC"
## [907] "2017-06-30 08:10:13 UTC" "2017-06-30 08:20:13 UTC"
## [909] "2017-06-30 08:30:13 UTC" "2017-06-30 08:40:13 UTC"
## [911] "2017-06-30 08:50:13 UTC" "2017-06-30 09:00:13 UTC"
## [913] "2017-06-30 09:10:13 UTC" "2017-06-30 09:20:13 UTC"
## [915] "2017-06-30 09:30:13 UTC" "2017-06-30 09:40:13 UTC"
## [917] "2017-06-30 09:50:13 UTC" "2017-06-30 10:00:13 UTC"
## [919] "2017-06-30 10:10:13 UTC" "2017-06-30 10:20:13 UTC"
## [921] "2017-06-30 10:30:13 UTC" "2017-06-30 10:40:13 UTC"
## [923] "2017-06-30 10:50:13 UTC" "2017-06-30 11:00:13 UTC"
## [925] "2017-06-30 11:10:13 UTC" "2017-06-30 11:20:13 UTC"
## [927] "2017-06-30 11:30:13 UTC" "2017-06-30 11:40:13 UTC"
## [929] "2017-06-30 11:50:13 UTC" "2017-06-30 12:00:13 UTC"
## [931] "2017-06-30 12:10:13 UTC" "2017-06-30 12:20:13 UTC"
## [933] "2017-06-30 12:30:13 UTC" "2017-06-30 12:40:13 UTC"
## [935] "2017-06-30 12:50:13 UTC" "2017-06-30 13:00:13 UTC"
## [937] "2017-06-30 13:10:13 UTC" "2017-06-30 13:20:13 UTC"
## [939] "2017-06-30 13:30:13 UTC" "2017-06-30 13:40:13 UTC"
## [941] "2017-06-30 13:50:13 UTC" "2017-06-30 14:00:13 UTC"
## [943] "2017-06-30 14:10:13 UTC" "2017-06-30 14:20:13 UTC"
## [945] "2017-06-30 14:30:13 UTC" "2017-06-30 14:40:13 UTC"
## [947] "2017-06-30 14:50:13 UTC" "2017-06-30 15:00:13 UTC"
## [949] "2017-06-30 15:10:13 UTC" "2017-06-30 15:20:13 UTC"
## [951] "2017-06-30 15:30:13 UTC" "2017-06-30 15:40:13 UTC"
## [953] "2017-06-30 15:50:13 UTC" "2017-06-30 16:00:13 UTC"
## [955] "2017-06-30 16:10:13 UTC" "2017-06-30 16:20:13 UTC"
## [957] "2017-06-30 16:30:13 UTC" "2017-06-30 16:40:13 UTC"
## [959] "2017-06-30 16:50:13 UTC" "2017-06-30 17:00:13 UTC"
## [961] "2017-06-30 17:10:13 UTC" "2017-06-30 17:20:13 UTC"
## [963] "2017-06-30 17:30:13 UTC" "2017-06-30 17:40:13 UTC"
## [965] "2017-06-30 17:50:13 UTC" "2017-06-30 18:00:13 UTC"
## [967] "2017-06-30 18:10:13 UTC" "2017-06-30 18:20:13 UTC"
## [969] "2017-06-30 18:30:13 UTC" "2017-06-30 18:40:13 UTC"
## [971] "2017-06-30 18:50:13 UTC" "2017-06-30 19:00:13 UTC"
## [973] "2017-06-30 19:10:13 UTC" "2017-06-30 19:20:13 UTC"
## [975] "2017-06-30 19:30:13 UTC" "2017-06-30 19:40:13 UTC"
## [977] "2017-06-30 19:50:13 UTC" "2017-06-30 20:00:13 UTC"
## [979] "2017-06-30 20:10:13 UTC" "2017-06-30 20:20:13 UTC"
## [981] "2017-06-30 20:30:13 UTC" "2017-06-30 20:40:13 UTC"
## [983] "2017-06-30 20:50:13 UTC" "2017-06-30 21:00:13 UTC"
## [985] "2017-06-30 21:10:13 UTC" "2017-06-30 21:20:13 UTC"
## [987] "2017-06-30 21:30:13 UTC" "2017-06-30 21:40:13 UTC"
## [989] "2017-06-30 21:50:13 UTC" "2017-06-30 22:00:13 UTC"
## [991] "2017-06-30 22:10:13 UTC" "2017-06-30 22:20:13 UTC"
## [993] "2017-06-30 22:30:13 UTC" "2017-06-30 22:40:13 UTC"
## [995] "2017-06-30 22:50:13 UTC" "2017-06-30 23:00:13 UTC"
You can use add_colourscale() to adjust the color scales of the frames
library(moveVis)
library(move)
data("move_data", "basemap_data")
# align movement
m <- align_move(move_data, res = 4, unit = "mins")
#> Temporal resolution of 4 [mins] is used to align trajectories.
# create spatial frames with frames_spatial:
r_list <- basemap_data[[1]]
r_times <- basemap_data[[2]]
frames <- frames_spatial(m, r_list = r_list, r_times = r_times, r_type = "gradient",
fade_raster = TRUE)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Assigning raster maps to frames...
## Creating frames...
frames[[100]] # take a look at one of the frames
# default blue is boring, let's change the colour scale of all frames
frames <- add_colourscale(frames, type = "gradient", colours = c("orange", "white", "darkgreen"),
legend_title = "NDVI")
frames[[100]]
# let's make up some classification data with 10 classes
r_list <- lapply(r_list, function(x){
y <- raster::setValues(x, round(raster::getValues(x)*10))
return(y)
})
# turn fade_raster to FALSE, since it makes no sense to temporally interpolate discrete classes
frames <- frames_spatial(m, r_list = r_list, r_times = r_times, r_type = "discrete",
fade_raster = FALSE)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Assigning raster maps to frames...
## Creating frames...
frames[[100]]
# now, let's assign a colour per class value to frames
colFUN <- colorRampPalette(c("orange", "lightgreen", "darkgreen"))
cols <- colFUN(10)
frames <- add_colourscale(frames, type = "discrete", colours = cols, legend_title = "Classes")
frames[[100]]
You can use join_frames() to join two or more frames of equal length into a single plot per frame
library(moveVis)
library(move)
data("move_data", "basemap_data")
# align movement
m <- align_move(move_data, res = 4, unit = "mins")
# create spatial frames and graph frames:
r_list <- basemap_data[[1]]
r_times <- basemap_data[[2]]
frames.sp <- frames_spatial(m, r_list = r_list, r_times = r_times, r_type = "gradient",
fade_raster = TRUE)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Assigning raster maps to frames...
## Creating frames...
frames.sp <- add_colourscale(frames.sp, type = "gradient",
colours = c("orange", "white", "darkgreen"), legend_title = "NDVI")
frames.flow <- frames_graph(m, r_list, r_times, path_legend = FALSE, graph_type = "flow")
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Creating frames...
frames.hist <- frames_graph(m, r_list, r_times, path_legend = FALSE, graph_type = "hist")
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Creating frames...
# check lengths (must be equal)
sapply(list(frames.sp, frames.flow, frames.hist), length)
## [1] 180 180 180
# Let's join the graph frames vertically
frames.join.gr <- join_frames(list(frames.flow, frames.hist), ncol = 1, nrow = 2)
## Joining frames...
frames.join.gr[[100]]
# Now, let's join the joined graph frames with the spatial frames horizontally
# in 2:1 ration and align all axis
frames.join <- join_frames(list(frames.sp, frames.join.gr),
ncol = 2, nrow = 1, rel_widths = c(2, 1), axis = "tb")
## Joining frames...
frames.join[[100]]
# in a standard graphics device, this looks a bit unproportional
# however when setting the correct width, height and resolution of a graphic device,
# it will come out well aligend.
# Do so for example with animate_move() with width = 900, dheight = 500 and res = 90
animate_frames(frames.join, out_file = tempfile(fileext = ".gif"), fps = 25,
width = 900, height = 500, res = 90, display = TRUE, overwrite = TRUE)
## Rendering animation...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
# library(moveVis)
# library(move)
# library(raster)
# library(tidyverse)
# library(ggplot2)
# library(here)
# library(tidytuesdayR)
# library(lubridate)
# library(janitor)
# library(dplyr)
# library(kableExtra)
# library(maps)
# library(mapdata)
# library(mapproj)
# animate_frames(
# frames = frames, # frames to animate
# width = 700, # width to scale frames
# height = 500, # height to scale frames
# res = 80, # resolution to display frames
# out_file = here("Mac", "output", "catplot.gif"), # where to save completed .gif
# overwrite = TRUE # If TRUE, you can overwrite the file with the same name
# )
You can choose to animate a subset of the generated frames
# animate_frames(
# frames = frames[1:10], # choose interval of frames to animate
# out_file = here("Mac", "output", "catplot_10_frames.gif"),
# overwrite = TRUE,
# width = 700,
# height = 500,
# res = 80
# )